#ifndef __LINKQUEUE_H_
#define __LINKQUEUE_H_

#include "DoubleLinkList.hpp"

template <typename T>
// class LinkQueue:public DoubleLinkList<int>    // 继承模版的特化:特化过的模版已经是普通类
class LinkQueue : public DoubleLinkList<T> // 继承了类模板的模版，仍然是类模板
{
public:
    LinkQueue() {};
    ~LinkQueue() {};
    // 类模版调用父类模版函数，需要声明父类模版
    void Push(const T &element)
    {
        DoubleLinkList<T>::InsertTail(element);
    }
    void Pop()
    {
        DoubleLinkList<T>::RemoveByIndex(0);
    }
    T &GetFront()
    {
        if(DoubleLinkList<T>::Size() == 0)
            throw "队列为空\n";  // 再从外界捕获异常
        return DoubleLinkList<T>::FindByIndex(0);
    }
    bool IsEmpty()
    {
        return DoubleLinkList<T>::Size() == 0;
    }
private:
};

#endif
